﻿#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;

const int N = 110;
int ne[N];
int h;

int main()
{
    int n, m;
    cin >> n >> m;
    for (int i = 1; i < n; i++) ne[i] = i + 1;
    ne[n] = 1;
    int t = n;
    while (n--)
    {
        for (int i = 1; i < m; i++)
        {
            t = ne[t];
        }
        cout << ne[t] << " ";
        ne[t] = ne[ne[t]];
    }
    return 0;
}


//const int N = 1e5 + 10;
//const int M = 1e6+10;
//int mp[M],ne[N], e[N];
//int q,h,id;
//
//int main()
//{
//    cin >> q;
//    id++;
//    e[id] = 1;
//    mp[1] = id;
//    while (q--)
//    {
//        int op, x, y;   cin >> op >> x;
//        int p = mp[x];
//        if (op == 1)
//        {
//            cin >> y;
//            id++;
//            e[id] = y;
//            mp[y] = id;
//            ne[id] = ne[p];
//            ne[p] = id;
//        }
//        else if (op == 2)
//        {
//                cout << e[ne[p]] << endl;
//        }
//        else
//        {
//
//            ne[p] = ne[ne[p]];
//        }
//    }
//    return 0;
//}

//const int N = 1e5 + 10;
//int e[N], ne[N];
//int h,id;
//int mp[N];
//
//// 打印
//void print()
//{
//    for (int i = ne[h];i; i = ne[i])
//    {
//        cout << e[i] << " ";
//    }
//    cout << endl;
//}
//
//// 头插
//void push_front(int x)
//{
//    e[++id] = x;
//    ne[id] = ne[h];
//    ne[h] = id;
//    mp[x] = id;
//}
//
//// 按值查找
//int find(int x)
//{
//    if(mp[x])
//        return mp[x];
//    return -1;
//}
//
//// 任意位置之后插入
//void insert(int p, int x)
//{
//    e[++id] = x;
//    mp[x] = id;
//    ne[id] = ne[p];
//    ne[p] = id;
//}
//
//// 删除任意位置之后的元素
//void erase(int p)
//{
//    if (ne[p])
//    {
//        mp[e[ne[p]]] = 0;
//        ne[p] = ne[ne[p]];
//    }
//   
//}
//
//int main()
//{
//    // 头插测试
//    cout << "头插测试" << endl;
//    push_front(1);
//    print();
//    push_front(2);
//    print();
//    push_front(3);
//    print();
//    push_front(4);
//    print();
//    push_front(5);
//    print();
//
//    // 查找测试
//    //cout << "查找测试" << endl;
//    //cout << "4的位置：" << find(4) << endl;
//    //cout << "1的位置：" << find(1) << endl;
//    //cout << "10的位置：" << find(10) << endl;
//
//    // 插入测试
//    //cout << "任意位置之后插入测试:" << endl;
//    //insert(1, 10);
//    //print();
//    //insert(3, 30);
//    //print();
//
//    // 删除测试
//    erase(1);
//    print();
//    erase(5);
//    print();
//
//
//
//    return 0;
//}


//struct ListNode {
//    int val;
//    ListNode* next;
//    ListNode(int x) : val(x),next(nullptr) {}
//};
//
///* 在链表的节点 n0 之后插入节点 P */
//void insert(ListNode* n0, ListNode* P) {
//    ListNode* n1 = n0->next;
//    P->next = n1;
//    n0->next = P;
//}
//
///* 删除链表的节点 n0 之后的首个节点 */
//void remove(ListNode* n0) {
//    if (n0->next == nullptr)
//        return;
//    ListNode* P = n0->next;
//    ListNode* n1 = P->next;
//    n0->next = n1;
//    // 释放内存
//    delete P;
//}
//
//ListNode* access(ListNode* head, int index)
//{
//    for (int i = 0; i < index; i++)
//    {
//        if (head->next)  return nullptr;
//        head = head->next;
//    }
//
//}
//
///* 在链表中查找值为 target 的首个节点 */
//int find(ListNode* head, int target)
//{
//    int index = 0;
//    while (head != nullptr)
//    {
//        if (target == head->val)
//            return index;
//        head = head->next;
//        index++;
//    }
//    return - 1;
//}
//int main()
//{
//    ListNode* n0 = new ListNode(1);
//    ListNode* n1 = new ListNode(3);
//    ListNode* n2 = new ListNode(2);
//    ListNode* n3 = new ListNode(5);
//    ListNode* n4 = new ListNode(4);
//
//    n0->next = n1;
//    n1->next = n2;
//    n2->next = n3;
//    n3->next = n4;
//
//    return 0;
//}


//int arr[5];
//int* nums = new int[10] {1,2,3,4,5,6,7,8,9,0};
//
//void print(int* num,int sz)
//{
//    for (int i = 0; i < sz; i++) cout << num[i] << " ";
//}
//
//int randomAccess(int* num, int size)
//{
//    srand(time(0));
//    int randomIndex = rand() % size;
//    int randomNum = num[randomIndex];
//    return randomNum;
//}
//
//void insert(int p, int x,int* num,int size)
//{
//    for (int i = size - 2; i >= p; i--) num[i + 1] = num[i];
//    num[p] = x;
//}
//
//void remove(int* num, int sz, int p)
//{
//    for (int i = p; i < sz-1; i++) num[i] = num[i + 1];
//}
//
///* 遍历数组 */
//void traverse(int* nums, int size) {
//    int count = 0;
//    // 通过索引遍历数组
//    for (int i = 0; i < size; i++) {
//        count += nums[i];
//    }
//}
//
//int find(int* num, int size, int target)
//{
//    for (int i = 0; i < size; i++)
//    {
//        if (num[i] == target)    return i;
//    }
//    return -1;
//}
//
//int main()
//{
//
//    //int ret = find(nums, 10, 6);
//    //cout << ret;
//    //remove(nums, 10, 5);
//    //print(nums, 10);
//    //insert(3, 100, nums, 10);
//    //print(nums,10);
//    //printf("随机访问的值为：%d\n", randomAccess(nums, 10));
//    return 0;
//}


//int* arr = new int[5];
//int* num = new int[5] {1, 2, 3, 4, 5};



// 寄包柜
//const int N = 1e5 + 10;
//int n, q;
//vector<int> a[N];
//
//int main()
//{
//    cin >> n >> q;
//    while (q--)
//    {
//        int op, i, j, k;
//        cin >> op >> i >> j;
//        if (op == 1)
//        {
//            cin >> k;
//            if (a[i].size() <= j)
//            {
//                a[i].resize(j + 1);
//            }
//            a[i][j] = k;
//        }
//        else
//        {
//            cout << a[i][j] <<endl;
//        }
//    }
//    return 0;
//}


// 询问学号
//const int N = 2e6 + 10;
//int n, m;
//
//int main()
//{
//    vector<int> a(N);
//    cin >> n >> m;
//    for (int i = 1; i <= n; i++) cin >> a[i];
//    while (m--)
//    {
//        int x;
//        cin >> x;
//        cout << a[x] << endl;
//    }
//    return 0;
//}

//const int N = 1e6 + 10;
//int a[N], n;
//
//// 打印
//void print()
//{
//    for (int i = 1; i <= n; i++)
//    {
//        cout << a[i] << " ";
//    }
//    cout << endl;
//}
//
//// 尾插
//void push_back(int x)
//{
//    a[++n] = x;
//}
//
//// 头插
//void push_front(int x)
//{
//    for (int i = n; i >= 1; i--)
//    {
//        a[i + 1] = a[i];
//    }
//    a[1] = x;
//    n++;
//}
//
//// 任意位置插入
//void insert(int p, int x)
//{
//    for (int i = n; i >= p; i--)
//    {
//        a[i + 1] = a[i];
//    }
//    a[p] = x;
//    n++;
//}
//
//// 尾删
//void pop_back()
//{
//    n--;
//}
//
//// 头删
//void pop_front()
//{
//    for (int i = 1; i < n; i++)
//    {
//        a[i] = a[i + 1];
//    }
//    n--;
//}
//
//// 任意位置删除
//void erase(int p)
//{
//    for (int i = p; i < n; i++)
//    {
//        a[p] = a[p + 1];
//    }
//    n--;
//}
//
//// 按值查找
//int find(int x)
//{
//    for (int i = 1; i <= n; i++)
//    {
//        if (a[i] == x)
//            return i;
//    }
//    return -1;
//}
//
//// 按位查找
//int at(int p)
//{
//    return a[p];
//}
//
//// 修改元素
//void change(int p, int x)
//{
//    a[p] = x;
//}
//
//// 清空表
//void clear()
//{
//    n = 0;
//}
//
//int main()
//{
    // 测试尾插
    //cout << "测试尾插" << endl;
    //push_back(2);
    //print();
    //push_back(5);
    //print();
    //push_back(1);
    //print();
    //push_back(3);
    //print();
    //cout << endl;

    // 测试头插
    // cout << "测试头插" << endl;
    // push_front(10);
    // print();

    // 测试任意位置插⼊
    // cout << "测试任意位置插入" << endl;
    // insert(3, 0);
    // print();

    // 测试尾删
    // cout << "测试尾删" << endl;
    // pop_back();
    // print();
    // pop_back();
    // print();
    // pop_back();
    // print();

    // 测试头删
    // cout << "测试头删" << endl;
    // pop_front();
    // print();
    // pop_front();
    // print();

    // 测试任意位置删除
    //  cout << "任意位置删除：" << endl;
    //  erase(3);
    //  print();
    //  erase(2);
    //  print();

    // 查找测试
    // for (int i = 1; i <= 10; i++)
    // {
    //     cout << "查找" << i << ": ";
    //     cout << find(i) << endl;
    // }

//    return 0;
//}

